package com.zzh.partnersys.ai.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zzh.partnersys.ai.entity.AiAssistantDocumentDO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 * AI助手文档关联表 服务类
 * </p>
 *
 * @author zzh
 * @since 2025-01-XX
 */
public interface AiAssistantDocumentService extends IService<AiAssistantDocumentDO> {

    /**
     * 上传文档并关联到助手
     *
     * @param assistantId 助手ID
     * @param userId      用户ID（用于权限校验）
     * @param file        上传的文件
     * @return 文档对象
     */
    AiAssistantDocumentDO uploadDocument(Long assistantId, Long userId, MultipartFile file);

    /**
     * 批量上传文档
     *
     * @param assistantId 助手ID
     * @param userId      用户ID（用于权限校验）
     * @param files       上传的文件列表
     * @return 文档对象列表
     */
    List<AiAssistantDocumentDO> batchUploadDocuments(Long assistantId, Long userId, List<MultipartFile> files);

    /**
     * 删除文档（逻辑删除）
     *
     * @param documentId 文档ID
     * @param userId     用户ID（用于权限校验）
     * @return 是否删除成功
     */
    boolean deleteDocument(Long documentId, Long userId);

    /**
     * 批量删除文档
     *
     * @param documentIds 文档ID列表
     * @param userId      用户ID（用于权限校验）
     * @return 是否删除成功
     */
    boolean batchDeleteDocuments(List<Long> documentIds, Long userId);

    /**
     * 获取助手的所有文档列表（从缓存或数据库）
     *
     * @param assistantId 助手ID
     * @return 文档列表
     */
    List<AiAssistantDocumentDO> getAssistantDocuments(Long assistantId);

    /**
     * 根据ID获取文档（从缓存或数据库）
     *
     * @param documentId 文档ID
     * @return 文档对象
     */
    AiAssistantDocumentDO getDocumentById(Long documentId);

    /**
     * 启用/禁用文档
     *
     * @param documentId 文档ID
     * @param userId     用户ID（用于权限校验）
     * @param status     状态（0-失效，1-有效）
     * @return 是否更新成功
     */
    boolean updateDocumentStatus(Long documentId, Long userId, Integer status);
}

